import axios from 'axios'
import { API_BASE_URL, API_ENDPOINTS } from './config'

// 创建 axios 实例
const apiClient = axios.create({
  baseURL: API_BASE_URL,
  timeout: 5000,
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器 - 添加 token 到请求头
apiClient.interceptors.request.use(
    config => {
      const token = localStorage.getItem('token')
      if (token) {
        config.headers['Authorization'] = `Bearer ${token}`
      }
      return config
    },
    error => {
      return Promise.reject(error)
    }
)

// 响应拦截器 - 处理常见错误
apiClient.interceptors.response.use(
    response => {
      return response
    },
    error => {
      if (error.response) {
        // 处理 401 错误 - 未授权
        if (error.response.status === 401) {
          localStorage.removeItem('token')
          window.location.href = '/login' // 重定向到登录页面
        }
        // 处理其他 HTTP 错误（例如 404、500 等）
        else {
          console.error('请求失败', error.response.data || error.message)
        }
      }
      return Promise.reject(error)
    }
)

// 认证相关 API
export const authApi = {
  // 用户登录
  login(username, password, rememberMe = false) {
    return apiClient.post(API_ENDPOINTS.LOGIN, {
      username,
      password,
      rememberMe
    }).then(response => {
      const token = response.data.token // 假设返回的 token 存在于 response.data.token 中
      if (token) {
        localStorage.setItem('token', token) // 将 token 存入 localStorage
      }
      return response
    })
  },

  // 获取用户信息
  getUserInfo() {
    return apiClient.get(API_ENDPOINTS.USER_INFO)
  },

  // 用户登出
  logout() {
    return apiClient.post(API_ENDPOINTS.LOGOUT).then(() => {
      localStorage.removeItem('token') // 登出后删除 token
      window.location.href = '/login' // 重定向到登录页面
    })
  },

  // 用户注册
  register(username, password) {
    return apiClient.post(API_ENDPOINTS.REGISTER, {
      username,
      password
    })
  }
}
